import java.util.ArrayList;
import java.util.Comparator;

public class No045 {
    /**
     * 输入一个正整数数组，把数组里所有数字拼接起来排成一个数，打印能拼接出的所有数字中最小的一个。
     * 例如输入数组{3，32，321}，则打印出这三个数字能排成的最小数字为321323。
     */
    public String PrintMinNumber(int[] numbers) {
        ArrayList<String> arrayList = new ArrayList<>();
        for (int i : numbers) {
            arrayList.add(Integer.toString(i));
        }

        // 自定义排序规则
        arrayList.sort(new Comparator<String>() {
            @Override
            public int compare(String o1, String o2) {
                return (o1+o2).compareTo(o2+o1);
            }
        });

        StringBuilder sb = new StringBuilder();
        for (String s : arrayList) {
            sb.append(s);
        }
        return sb.toString();
    }
}
